/*
 * TerminarTiempoRegistroAyudantia.java
 *
 * Created on August 20, 2007, 7:08 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package hero.hook;

import hero.interfaces.BnNodeLocal;
import hero.interfaces.BnNodeValue;
import hero.interfaces.Constants;
import hero.interfaces.ProjectSession;
import hero.interfaces.ProjectSessionHome;
import hero.interfaces.ProjectSessionUtil;
import hero.interfaces.UserSession;
import hero.interfaces.UserSessionHome;
import hero.interfaces.UserSessionUtil;
import hero.util.BonitaServiceException;
import hero.util.BonitaServiceLocator;
import hero.util.HeroException;
import hero.util.HeroHookException;
import java.rmi.RemoteException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.CreateException;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.naming.NamingException;
import javax.mail.Address;
import javax.mail.Transport;

/**
 *
 * @author kabad
 */
public class TerminarTiempoRegistroAyudantia implements hero.hook.NodeHookI {

    /**
     * Creates a new instance of TerminarTiempoRegistroAyudantia
     */
    public TerminarTiempoRegistroAyudantia() {
        System.out.println("TerminarTiempoRegistroAyudantia");

    }

    public String getMetadata() {
        return Constants.Nd.ONDEADLINE;
    }

    public void create(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void beforeStart(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void afterTerminate(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void onCancel(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void anticipate(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void onDeadline(Object b, BnNodeLocal n) throws HeroHookException {
        ProjectSessionHome prjHome;
        BnNodeValue actividad;
        UserSession usrSession;
        UserSessionHome usrHome;

        System.out.println("xxSe termino la convocatoria para ayudantes, instancia:" + n.getBnProject().getName());


        try {
            usrHome = UserSessionUtil.getHome();
            usrSession = usrHome.create();

            prjHome = (ProjectSessionHome) ProjectSessionUtil.getHome();
            ProjectSession prjSession = prjHome.create();

            actividad = usrSession.getNode(n.getBnProject().getName(), "Registrar estudiantes");
            prjSession.initProject(n.getBnProject().getName());
            prjSession.setNodeType("Registrar estudiantes", hero.interfaces.Constants.Nd.AND_JOIN_AUTOMATIC_NODE);

            if (actividad != null &&
                    (actividad.getState() == hero.interfaces.Constants.Nd.READY ||
                    actividad.getState() == hero.interfaces.Constants.Nd.ANTICIPABLE)) {
                usrSession.startActivity(n.getBnProject().getName(), "Registrar estudiantes");
            }

            BonitaServiceLocator serviceLocator = BonitaServiceLocator.getInstance();
            Session session;
            session = (Session) serviceLocator.getMailSession(BonitaServiceLocator.Services.MAIL_SERVICE);
            MimeMessage m = new MimeMessage(session);
            m.setFrom();
            InternetAddress[] direcciones = new InternetAddress[1];
            //leer el mail del solicitante de la base
            direcciones[0] = new InternetAddress("kabad@espol.edu.ec");
//            Address[] to = new InternetAddress[]{new InternetAddress("kabad@espol.edu.ec")};
            Address[] to = direcciones;
            m.setRecipients(javax.mail.Message.RecipientType.TO, to);

            m.setSubject("Sistema Solicitudes Fiec. Selección de Ayudantes pendiente");
            m.setSentDate(new java.util.Date());
//            //solicitante deberia ser el nombre obtenido de la base de datos.
            String message = "Solicitud de Ayudantes" + "_" + "xxx" + ": " +
                    "Seleccionar ayudantes" + "\n\n" + "Título: " + "xxxx" + "\n" +
                    "Solicitante: " + "xxx" + "\n\n" +
                    "La solicitud está en espera de su evaluación." +
                    "\n\n" + "Puede realizar la actividad dirigiéndose a la sección actividades pendientes del sistema." + " Use su navegador de Internet e ingrese a la dirección :" +
                    " http://localhost:8080/WA_SolicitudesFIEC" +
                    "\n\nGracias.";
            m.setContent(message, "text/plain");
// Sending email
            Transport.send(m);
            System.out.println("Email was successfully sent");
        } catch (MessagingException ex) {
            Logger.getLogger(TerminarTiempoRegistroAyudantia.class.getName()).log(Level.SEVERE, null, ex);
        } catch (BonitaServiceException ex) {
            Logger.getLogger(TerminarTiempoRegistroAyudantia.class.getName()).log(Level.SEVERE, null, ex);
        } catch (RemoteException ex) {
            ex.printStackTrace();
        } catch (CreateException ex) {
            ex.printStackTrace();
        } catch (NamingException ex) {
            ex.printStackTrace();
        } catch (HeroException ex) {
            ex.printStackTrace();
        }
    }

    public void afterStart(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void onReady(Object b, BnNodeLocal n) throws HeroHookException {
    }

    public void beforeTerminate(Object b, BnNodeLocal n) throws HeroHookException {
    }
}
